//go:build windows
// +build windows

package files

import (
	"fmt"
	"os"
	"path/filepath"
)

// XChmod 修改文件路径权限(兼容Win/Unix)
//   - path String
//   - mode os.FileMode 如 os.FileMode(0777)  八进制的UNIX文件/文件夹权限模式
func XChmod(dirPath string, mode os.FileMode) error {
	if err := os.Chmod(dirPath, mode); err != nil {
		return fmt.Errorf("XChmod failed %s: %w", dirPath, err)
	}
	return nil
}

// PathCreate 创建文件夹路径(兼容Win/Unix)
//   - path String
//   - mode os.FileMode 如 os.FileMode(0777)  八进制的UNIX文件/文件夹权限模式
//   - -rw------- (0600)    只有拥有者有读写权限。
//   - -rw-r--r-- (0644)    只有拥有者有读写权限；而属组用户和其他用户只有读权限。
//   - -rwx------ (0700)    只有拥有者有读、写、执行权限。
//   - -rwxr-xr-x (0755)    拥有者有读、写、执行权限；而属组用户和其他用户只有读、执行权限。
//   - -rwx--x--x (0711)    拥有者有读、写、执行权限；而属组用户和其他用户只有执行权限。
//   - -rw-rw-rw- (0666)    所有用户都有文件读、写权限。
//   - -rwxrwxrwx (0777)    所有用户都有读、写、执行权限。
func PathCreate(dirPath string, mode os.FileMode) error {
	dirPath = filepath.Clean(dirPath)
	dirPath, _ = filepath.Abs(dirPath)
	err := os.MkdirAll(dirPath, mode)
	if err != nil {
		return fmt.Errorf("PathCreate failed %s: %w", dirPath, err)
	}
	return nil
}
